from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base

# 声明一个基类, 所有的模型都需要绑定在这个基类上面, 才能创建到数据库里面去, 而且以只有通过模型才能查询数据库.
# 本次我们先创建表, 但是这个基类依然是必不可少的.
Base = declarative_base()
# 连接设置 连接mysql 用户名ffzs 密码666 地址localhost：3306 database：stock
engine = create_engine('mysql+pymysql://root:root@localhost:3306/tradesource')
Session = sessionmaker(engine)
# ['注册号/申请号', '国际分类', '申请日期', '商标名称', '商标类型', '代理机构代码', '初审公告期号', '初审公告日期', '注册 公告期号', '注册公告日期', '专用期开始日期',
# '专用期结束日期', '专用有效期', '商标设计说明', '商标颜色说明', '放弃专用权说明', '是否立体商标', '是否共有申请', '商标形态', '地理标志信息', '颜色标志', '是否驰名商标']
# 注册号/申请号	共有人中文名称	共有人英文文名称	共有人中文地址	共有人英文地址
# 注册号/申请号	国际分类	优先权编号	优先权种类	优先权日期	优先权商品	优先权国家/地区
dataIndex = {
    'id': ['id', 'INTEGER PRIMARY KEY'],
    '注册号/申请号': ['brandCode', 'varchar(50)'],
    '国际分类': ['classNum', 'varchar(20)'],
    '申请日期': ['applicationDate', 'varchar(50)'],
    '商标名称': ['brand', 'varchar(50)'],
    '商标类型': ['branType', 'varchar(50)'],
    '代理机构代码': ['agencyCode', 'varchar(50)'],
    '代理名称': ['agencyName', 'varchar(50)'],
    '初审公告期号': ['firstNotice', 'varchar(50)'],
    '初审公告日期': ['firstNoticeDate', 'varchar(50)'],
    '注册公告期号': ['regNotice', 'varchar(50)'],
    '注册公告日期': ['regNoticeDate', 'varchar(50)'],
    '专用期开始日期': ['regStartDate', 'varchar(50)'],
    '专用期结束日期': ['regEndDate', 'varchar(50)'],
    '专用有效期': ['regValidityTime', 'varchar(50)'],
    '商标设计说明': ['designExplain', 'text'],
    '商标颜色说明': ['colourExplain', 'text'],
    '放弃专用权说明': ['giveExplain', 'text'],
    '是否立体商标': ['isSolid', 'varchar(50)'],
    '是否共有申请': ['isShare', 'varchar(50)'],
    '共有人信息': ['shareData', 'text'],
    '商标形态': ['brandForm',  'varchar(50)'],
    '地理标志信息': ['addressSign',  'varchar(50)'],
    '颜色标志': ['colourSign',  'varchar(50)'],
    '是否驰名商标': ['isFamous',  'varchar(50)'],
    '优先权信息': ['priorityData',  'text'],
    '国际注册日期': ['internationalRegDate',  'varchar(50)'],
    '国际通知日期': ['internationalNoticeDate',  'varchar(50)'],
    '国际申请语种': ['internationalLanguage ', 'varchar(50)'],
    '国际申请类型': ['internationalType', 'varchar(50)'],
    '国际公告期号': ['internationalNoticeNum', 'varchar(50)'],
    '国际公告日期': ['internationalPublicNoticeDate', 'varchar(50)'],
    '后期指定>日期': ['internationalLaterDate', 'varchar(50)'],
    '基础注册日期': ['internationalBasicsRegDate', 'varchar(50)'],
    '注册人中文名称': ['regCnName', 'varchar(250)'],
    '注册人外文名称': ['regEnName', 'varchar(250)'],
    '注册人中文地址': ['regCnAddress', 'varchar(250)'],
    '注册人英文地址': ['regEnAddress', 'varchar(250)'],
    '商品信息': ['goodsData', 'text']
}
# 注册号/申请号	国际分类	类似群	商品序号	商品中文名称	商品状态
# 注册号/申请号	国际分类	注册人中文名称	注册人外文名称	注册人中文地址	注册人英文地址
# 注册号/申请号	国际注册号	国际注册日期	国际通知日期 	国际申请语种	国际申请类型	国际公告期号	国际公告日期	后期指定>日期	基础注册日期
# 优先权信息
priorityIndex = {
    '优先权编号': 'priorityCode',
    '优先权种类': 'priorityType',
    '优先权日期': 'priorityDate',
    '优先权商品': 'priorityGoods',
    '优先权国家/地区': 'priorityAddress'
}
# 商品信息
goodsIndex = {
    '类似群': 'goodsGroup',
    '商品序号': 'goodsNum',
    '商品中文名称': 'goodsCnName',
    '商品状态': 'goodsStatus'
}
credibleIndex = [
    '注册号/申请号', '代理人编码', '国际分类'
]


if __name__ == '__main__':
    # 创建表,如果不存在的话
    Base.metadata.create_all(engine)
